/**
 * ajax请求数据
 * 
 * @param url：请求的url
 * @param param：传递的参数,这里进行utf-8编码，后端服务器需要进行相应解码，处理中文乱码问题
 * @param callBack
 *            回调处理函数 与isShowWait配合实现多个请求的等待状态显示
 * @param isAsync
 *            是否异步请求，默认是true
 * @param timeOutFunc
 *            超时后的处理函数，默认可不传，只提示超时
 * @param dataType
 *            出参格式，默认可不传，为json格式
 */
function request(url, param, callBack, isAsync, timeOutFunc, dataType) {
	// 设置默认值
	isAsync = (typeof (isAsync) == "undefined" || isAsync === "") ? true
			: isAsync;
	dataType = dataType || "json";

	// UTF-8编码
	for ( var key in param) {
		var value = param[key] + "";
		if (!value || value.trim().toLowerCase() === "null"
				|| value.trim().toLowerCase() === "undefined") {
			param[key] = "";
		} else {
			value = encodeURIComponent(value);
			param[key] = value;
		}
	}

	$.ajax({
		url : url,
		data : param,
		type : "post",
		dataType : dataType,
		async : isAsync,
		success : function(data, textStatus, jqXHR) {

			alert(JSON.stringify(data));
			if (data) {
				if (callBack) {
					callBack(data);
				}
			} else {
				alert("后台返回数据格式不正确，请联系管理员！");
//				layerUtils.iMsg(-1, "后台返回数据格式不正确，请联系管理员！");
			}
		},
		complete : function(XMLHttpRequest, textStatus) {
//			if (isShowWait && isLastReq) {
//				layerUtils.iLoading(false);
//			}
		},
		// 请求失败时执行
		error : function(jqXHR, textStatus, errorMsg) {
			// jqXHR 是经过jQuery封装的XMLHttpRequest对象
			// textStatus 可能为： null、"timeout"、"error"、"abort"或"parsererror"
			// errorMsg 可能为： "Not Found"、"Internal Server Error"等
			alert("请求失败：" + errorMsg);
		}
	});

	// 设置请求超时提醒，时间默认为20秒
//	var timeoutNum = 20;
//	setTimeout(function() {
//		if (iAjax && iAjax.readyState && iAjax.readyState != 4) { // 还在请求状态时
//			iAjax.abort();
//			// 增加超时特殊处理功能
//			if (timeOutFunc) {
//				timeOutFunc();
//			} else {
//				layerUtils.iMsg(-1, "请求超时，请检查接口是否异常或者网络不通！");
//			}
//		}
//	}, 1000 * parseInt(timeoutNum));
}